﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Baza.EF.DAL;
using Baza.EF.BLL;

namespace Pep_3014_3070.Customers
{
    public partial class Reservation : System.Web.UI.Page
    {
        public List<ad_Customer_Reservation_By_CustomerID_Result> rezervacijeCustomerID
        {
            get
            {
                if (Session["rezervacijeCustomer"] == null)
                {
                    Session["rezervacijeCustomer"] = new List<ad_Customer_Reservation_By_CustomerID_Result>();
                }
                return (List<ad_Customer_Reservation_By_CustomerID_Result>)Session["rezervacijeCustomer"];
            }
            set
            {
                Session["rezervacijeCustomer"] = value;
            }
        }
        public Reservations rezervacija
        {
            get
            {
                if (Session["rezervacija"] == null)
                {
                    Session["rezervacija"] = new Reservations();
                }
                return (Reservations)Session["rezervacija"];
            }
            set
            {
                Session["rezercavija"] = value;
            }
        }
        protected int ApartmanID
        {
            get { return (int)ViewState["apartID"]; }
            set { ViewState["apartID"] = value; }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ApartmanID = Convert.ToInt32(RouteData.Values["id"]);
                bool valid = true;
                
                //potrebno izvrsiti provjeru da li je apartman rezerviran , ako nebi bilo provjere korisnik bi na refresh stranice mogao rezervirati isti apartman
                    //jer link ide ovako : Reservation/id . . .i na svaki Refresh se rezervira isti apartman (DUPLICIRA SE)
                for (int i = 0; i < rezervacijeCustomerID.Count; i++)
                {
                    if(ApartmanID == rezervacijeCustomerID[i].ApartmentID)
                    {
                        valid = false;
                        break;
                    }
                }
                if (valid)
                {
                    AddReservation();
                }
                else
                    Bind();
            }
        }

        private void AddReservation()
        {
            //ZA UPDATE APLIKACIJE!!

            //Trebalo bi uzeti ID prijavaljenog USERA (ADMINISTRATIVNI DIO ), koji ima status SLOBODAN, te mu poslati NOTIFIKACIJU , kako bi mogao potvrditi ili pratiti daljni dogadja situacije izmedju Iznajmljivaca i Kupca
           
            if (DACustomers.AddNewReservation(ApartmanID, Convert.ToInt32(HttpContext.Current.User.Identity.Name),2,
                Convert.ToDateTime(rezervacija.CheckIn), Convert.ToDateTime(rezervacija.CheckOut), Convert.ToDecimal(rezervacija.Price),
                Convert.ToInt32(rezervacija.NumberGuest)))
            {

             

                ad_Customer_Reservation_By_CustomerID_Result tempR = new ad_Customer_Reservation_By_CustomerID_Result();

                tempR.ApartmentID = ApartmanID;
                tempR.CustomerID = Convert.ToInt32(HttpContext.Current.User.Identity.Name);
                tempR.CheckIn = Convert.ToDateTime(rezervacija.CheckIn);
                tempR.CheckOut = Convert.ToDateTime(rezervacija.CheckOut);
                tempR.Price = Convert.ToDecimal(rezervacija.Price);
                tempR.NumberGuest = Convert.ToInt32(rezervacija.NumberGuest);
                tempR.Nights = (Convert.ToDateTime(rezervacija.CheckOut) - Convert.ToDateTime(rezervacija.CheckIn)).Days;
                Apartments apart = DACustomers.getPicturesOfApartman(ApartmanID);
                tempR.ProfilePictures = apart.ProfilePictures;
                tempR.Title = apart.Title;
                tempR.ReservationDate = Convert.ToDateTime(DateTime.Now);

                rezervacijeCustomerID.Add(tempR);
                Bind();
            }

        }

        private void Bind()
        {

            RezervacijeRepeater.DataSource = rezervacijeCustomerID;
            RezervacijeRepeater.DataBind();
        }
       
        
    }
}